Reconfigurable or programmable logic devices are a general class of logic devices that can be easily configured to perform a desired logic operation. Field programmable gate arrays (FPGA) are a typical example. These devices may be programmed many times to perform different logic operations. Most importantly, they can be programmed to create gate array prototypes instantaneously, allowing complete dynamic reconfigurability.
System designers commonly use reconfigurable logic devices such as FPGAs to test digital logic designs prior to manufacture or fabrication for hardware debugging or to expose other design flaws. Usually, these tests are termed emulations in which a reconfigurable logic system constructed from the devices models the logic design, such as a microprocessor, in order to confirm the proper operation of the logic design along with possibly its compatibility with an environment or user system in which it is intended to operate. In the tests, a netlist describing the internal architecture of the logic design is compiled for a specific class of reconfigurable devices and then loaded by some type of configuring system, such as a host workstation, into a reconfigurable system constructed from the class of devices. If the reconfigurable logic system is a single or array of FPGAs, the loading step is as easy as down-loading a file describing the compiled netlist to the FPGAs. The programmed configurable logic system is then tested in the user environment by confirming that its response to user data signals and user clock signals agrees with the design specifications for the design.
Recently, most of the attention in complex logic design modeling has been directed to reconfigurable systems built from heterogeneous networks of special purpose FPGA processors connected to exchange signals via some type of interconnect. The networks are heterogeneous not necessarily in the sense that they are composed of arrays of different devices but that the devices have been individually configured to cooperatively execute different sections, or partitions, of the overall user logic design. These networks rely on static routing at compile-time to organize the propagation of logic signals through the FPGA network. Static refers to the fact that all data or logic signal movement can be determined and optimized during compiling.
Logic analysis techniques are often applied to these FPGA networks. Typically, the networks are constructed for the intended purpose of identifying flaws in the user design. Other times, however, a flaw may exist at the level of the FPGA network. That is, the logic design may not be the source of the problem but, in the process of adapting the user logic design to the FPGA network, some improper operation such as hold time errors arose. Logic analysis is a process by which digital logic values of logic signals propagating within the FPGA processor are sampled and compared with the values those logic signals should have if the system were operating properly. When improper operation is discovered according to this process, faults in the original user logic design or at the level of the compiled netlist can be corrected by reconfiguration and reloading a new compiled netlist.
A logic analyzer is commonly used to perform the logic analysis. These devices have a number of channels with corresponding probes that are physically connected to the conductors in the FPGA network on which the logic signals of interest propagate. The logic analyzer is then provided with some trigger condition. Usually, a trigger condition is at least in part defined by the user clock signal, i.e., the clock signal from the user environment defining the operation cycles of the FPGA network. The trigger condition is also usually established by other logic signals from the FPGA network. For example, if it is known that a particular logic design is not operating properly during data writes to a bus, then the trigger condition might be enabled in part in response to a write enable signal within the logic design. At occurrence of the trigger condition, the analyzer samples the logic signals.
Other logic analysis tools are known for FPGA networks. Since the FPGA networks are completely configurable and additional processing power is added by providing additional FPGAs, some have implemented a logic analyzer in the FPGA network alongside the portion of the network that is dedicated to emulating or modeling the user logic design. Usually, such a system takes the form of a circular or FIFO, first-in-first-out, buffer. Logic values from the logic signals of interest are written to the buffer until a trigger condition is met. At this point, the contents of the buffer are frozen. A host workstation can then be used to read out the contents of the buffer for analysis to determine the origin of any faults or confirm the proper operation.